package onjava.advance.ch02.sec02;

import java.util.ArrayList;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

/**
 * 克隆对象
 * - 不对ArrayList中的所有对象进行clone()可能是个合理的假设，因为无法保证这些对象都是可克隆的
 */
public class CloneArrayList {
    public static void main(String[] args) {
        ArrayList<Int> v = IntStream.range(0, 10)
                .mapToObj(Int::new)
                .collect(Collectors.toCollection(ArrayList::new));
        System.out.println("v:" + v);
        ArrayList<Int> v2 = (ArrayList<Int>) v.clone();
        // 对v2中的所有元素进行自增
        v2.forEach(Int::increment);
        // 看看是否个性了v中的元素
        System.out.println("v: " + v);
    }
}

class Int {
    private int i;

    public Int(int i) {
        this.i = i;
    }

    public void increment() {
        i++;
    }

    @Override
    public String toString() {
        return Integer.toString(i);
    }
}
